	.section .rodata
	.align 2

message:
	.string "Entrez le rayon"

msg_dep:
	.string "Depassement de capacite"

msg_ok:
	.string "Ok"

format_s:
	.string "%s\n"

format_d_in:
	.string "%u"	/* unsigned int */

format_d_out:
	.string "%u\n"

pi:
	.int 31415 	

dixmil:
	.int 10000

	.text
	.align 2
	.global main

main:
	/* sauvegarde la pile */
	stmfd sp!, {lr}

	/* invite de saisie */
	ldr r0, =format_s
	ldr r1, =message
	bl printf

	/* récupère le rayon */
	ldr r0, =format_d_in
	sub sp, sp, #4				/* fait de la place sur la pile */
	mov r1, sp                 	/* ecrit sur la pile */
    bl scanf   					/* args r0=format, r1=@ */                 
    ldr r1, [sp]				/* recup de la pile -> r1 = rayon */
	add sp, #4					/* remet la pile à jour */


	/* calcul de l'aire :
	 * 31415 x r /10000 x r
	 */
	
	/* multiplications */
	/*muls r1, r1, r1				/* r x r */
	umull r1, r2, r1, r1  
	cmp r2, #0
	bne depC2					/* branch if overflow*/ 
	
	ldr r0, =pi
	ldr r0, [r0]
	/*muls r1, r1, r0				/* r x r x 31415 */ 
	umull r1, r2, r1, r0
	cmp r2, #0
	bne depC2					/* branch if overflow*/ 	

	/* division */
	mov r0, r1
	ldr r1, =dixmil
	ldr r1, [r1]
	bl __aeabi_uidiv
	
	/* affichage de l'aire */
	mov r1, r0
	ldr r0, =format_d_out
	bl printf

ok:
	/* Affichage d'un message de validation */
	ldr r0, =format_s
	ldr r1, =msg_ok
	bl printf
	
	/* maj valeur de retour du main */
	mov r0, #0	
	b end

depC2:
	/* Affichage d'un message d'erreur */
	ldr r0, =format_s
	ldr r1, =msg_dep
	bl printf
	
	/* maj valeur de retour du main */
	mov r0, #1

end:
	/* restaure la pile */
	ldmfd sp!, {lr}
	bx lr
